Parsec Relay ServerでParsec Error 6023&6024を解決し、Parsecホストに接続できました
Parsec error 6023と6024でどうしてもホストに接続できない場合は、Parsec For Teamsプラン以上であれば、Relay Serverを設置することで、必ず接続成功させます。
概要
Parsecを使用する際、ローカルマシンのネット環境によって、ホストに接続できないことは少なくないと思います。
その中に、error 6023
とerror 6024
(Unable To Negotiate A Successful Connection)の場合が多い気がします。
公式サイトエラー6023と6024の解決案にいくつ方法が書かれていますが、少し厳しいネット環境では、解決案にある方法を全て試してもダメな場合もあるので、このブログでRelay ServerでParsecの接続を必ず成功させるということを紹介したいと思います。
Parsec Relay Serverの試しは弊社の森さんも書いたこともありますが、自分は自宅ネット環境でどうしてもParsecホストに接続できないことで、メモと少し補足としてこのブログを書きたいと思ってます。
(このブログは、Parsec ClientとParsec Hostが既に設定完了の状態を想定しています。ParsecインストールなどはParsec関連ブログに確認してください)
マシン環境
- Parsec License: Parsec for Teams / Enterprise
- Parsec Account Role: Admin
- Local Machine: Apple M1 Macbook Air
- Host Machine: AWS EC2 g4dn.xlarge (Windows Server 2019)
- Relay Server: AWS EC2 t3.medium(Ubuntu Focal 20.04 amd64 server)
事前説明
通信経路構成図
簡単にいうと、Parsec ClientとParsec Hostが直接接続できなかったシナリオから、public IP
を持つRelay ServerでUDP通信を中継するようにしています。
Inbound/Outbound Rules
通信経路構成図
を見てみると、
6.HPR relays the UDP traffic to the Host via its "Host Start Port", which is random by default
ということなので、ホスト側のInbound Portはランダムで、そしてプライベートネットワーク経由なので、とりあえずホスト側全てのInbound Portを全て許容するようにします。
そしてこちらの場合、Outbound Port
はあまりセキュリティに影響なさそうなので、Relay ServerとHostどちらでもOutbound Port
を全て開放します。
つまり
- Relay Server: inbound port 4900
, 5000
/ outbound port all port
- Host: inbound port all port
/ outbound port all port
に設定します。
ParsecのAdmin権限
Relay Server download URLはTeams Global App Settingsに確認できますが、Teams Global App Settingsに入ることとRelay ServerのIP記入することには、Admin権限が必要です。
Relay Server Machine/System Spec
Relay Server machine specs: 2 cores 4GB RAM 1gbps+ NIC
公式最低マシンスペックは上記ですので、それに当たるt3.medium
(最低スペック + 5gbps帯域幅)をRelay Serverにします。
Supported Operating Systems: Ubuntu 18.04 Ubuntu 20.04 RHEL 7 RHEL 8 CentOS 7 CentOS 8
サポートされるシステムなんですけど、Ubuntu needs no firewall configuration by default, as it's default configuration blocks no traffic.
と言われましたので、一番手間がかからないUbuntu
にします。
手順
Relay Serverインスタンスの作成
AWSにログインし、Relay Server用新しいEC2を作ります。
システムはUbuntu Server 20.04 LTS
にし、インスタンスタイプはt3.medium
にします。
Inbound / Outbound Ruleを付ける
EC2 Dashboardの左側のNetwork & Security -> Security Groups
に入ります。
- Relay Server: inbound port
4900
,5000
/ outbound portall port
- Host: inbound port
all port
/ outbound portall port
そして全てのルールをAnywhere-IPv4
にし、Relay ServerとHost、二つSecurity Groupを作成します。
作成されたSecurity Rule
をRelay ServerとHostにつけます。
(EC2 Instanceの詳細画面に、Actions -> Security -> Change Security Groups
)
Relay Serverのインストールと起動
リモートで作られたRelay ServerEC2インスタンスにアクセスし、コマンド実行できる状態にします。(こちらはSSH Clientを使いました、これからのコマンドにあるリンクやURLなどをご自身のに変更してください)
Admin権限のアカウントでログインし、Teams Global App Settingsに入ります。
Download The High Performance Relay Server
のリンクをコピーします(https://teams.parsec.app/xxxx.tar.gz
)。
wget https://teams.parsec.app/xxxx.tar.gz tar -xf xxxx.tar.gz
まずParsec Relay Serverのプログラムをダウンロードし、展開します。
cd parsechpr1.0 sudo cp parsechpr /bin sudo cp parsechpr.service /etc/systemd/system
展開したプログラムのものをシステムパスにコピーします。
sudo nano /etc/systemd/system/parsechpr.service
Relay Serverのip:portを``ExecStart=/bin/parsechpr xx.xx.xx.xx 5000 4900```の風に設定します。
sudo systemctl start parsechpr sudo systemctl enable parsechpr
Parsec Relay Serverプログラムを起動します。
Teams Global App Settingsに情報入力
上記の手順が終わったら、Teams Global App Settingsに入り、またGroup Management -> HIGH PERFORMANCE RELAY SERVER SETTINGS
に入ります。
Relay Server EC2 InstanceのPublic IP address
とPort
を記入します(xx.xx.xx.xx:4900)。
これでRelay Serverの設定が全て完了となり、このままParsec ClientがParsec Hostにの接続はできるはずです。
ちなみに、元々接続できない環境がRelay Serverで接続したら、Relay Serverを閉じても(Teams Global App Settingsに記入したものを消しても)、再接続ができる状態になっています(同じネット環境の複数端末)。恐らく一回NAT Punching(UDP Hole Punching)されたら、このままずっと接続できるようになって(いつできなくなるのが分からないですけど)、Relay Serverの費用に気になる方はただ接続エラーを解決するためなら、接続ができてからRelay Serverをオフにしても構わないと思います。